
package util.Pessoa;


import java.util.Calendar;
import java.util.List;
import javax.persistence.*;
import util.Persistencia.ObjetoPersistente;


@Entity
@Inheritance(strategy= InheritanceType.JOINED)
public class Pessoa extends ObjetoPersistente{
    protected String nome;
    protected Calendar dataNascimento;
    protected String cpf;
    protected String identidade;
    protected String email;
    protected List<Telefone> telefone;

    /**
     * Obtém o cpf de Pessoa
     * @return 
     */
    public String getCpf() {
        return cpf;
    }

    /**
     * Altera o valor de cpf em Pessoa
     * @param cpf 
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    
    /**
     * Obtém dataNascimento de Pessoa
     * @return 
     */
    @Temporal(javax.persistence.TemporalType.DATE)
    public Calendar getDataNascimento() {
        return dataNascimento;
    }

    /**
     * Altera o valor de dataNascimento em Pessoa
     * @param dataNascimento 
     */
    public void setDataNascimento(Calendar dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    /**
     * Obtém o email de Pessoa
     * @return 
     */
    public String getEmail() {
        return email;
    }

    /**
     * Altera o valor de email de Pessoa
     * @param email 
     */
    public void setEmail(String email) {
        this.email = email;
    }


    /**
     * Obtém identidade de Pessoa
     * @return 
     */
    public String getIdentidade() {
        return identidade;
    }

    /**
     * Altera o valor de identidade em Pessoa
     * @param identidade 
     */
    public void setIdentidade(String identidade) {
        this.identidade = identidade;
    }

    /**
     * Obtém nome em Pessoa
     * @return 
     */
    public String getNome() {
        return nome;
    }

    /**
     * Altera o valor de nome em Pessoa
     * @param nome 
     */
    public void setNome(String nome) {
        this.nome = nome;
    }
        
    /**
     * Obtém o telefone de Pessoa
     * @return 
     */
    @ManyToMany(cascade= CascadeType.PERSIST, fetch= FetchType.EAGER)
    @JoinTable(name = "PessoaTelefone",
    joinColumns = {
        @JoinColumn(nullable=true, name = "id_pessoa")},
    inverseJoinColumns = {
        @JoinColumn(nullable=true, name = "id_telefone")})
    public List<Telefone> getTelefone() {
        return telefone;
    }

    /**
     * Altera o valor de telefone em Pessoa
     * @param telefone 
     */
    public void setTelefone(List<Telefone> telefone) {
        this.telefone = telefone;
    }
}
